/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package negocio;

import java.util.*;
import persistencia.PersistenciaCompra;


/**
 *  Clase que representa una compra de una serie de articulos del videoclub
 * @author JAVA
 */
public class Compra {
    private Cliente cliente;
    private Date fecha=new Date();
    private ArrayList<Articulo> listaArticulos;
    private int id;
   /**
     * Constructor que inicializa una lista de articulos vacia
     * @param fecha de la compra
     * @param nombre del cliente que realiza la compra
     * @param nif del cliente que realiza la compra
     */ 
    public Compra(Date fecha, Cliente c) {
        this.fecha=fecha;
        cliente=c;
        listaArticulos = new ArrayList();
        
    }
    /**
     * Constructor utilizado cuando se realiza una consulta en la BBDD ya que contiene la id de la compra
     * @param nombre del cliente que realiza la compra
     * @param nif del cliente que realiza la compra
     * @param listaArticulos que el cliente quiere compra
     * @param id de la compra
     */
    public Compra(Cliente c, ArrayList<Articulo> listaArticulos, int id) {
        cliente=c;
        this.listaArticulos = listaArticulos;
        this.id = id;
    }
    
    
    /**
     * Añadir articulo a la compra
     * @param Articulo a
     * @return boolean si el articulo se añade correctamente
     */
    public boolean addArticulo(Articulo a)
    {
        if(a.isSeVende() && !this.listaArticulos.contains(a)){
            return this.listaArticulos.add(a);
        }
        else return false;
    }
    /**
     * Borra el articulo de la compra si el cliente se arrepiente
     * @param Articulo a
     * @return boolean
     */
    public boolean removeArticulo(Articulo a)
    {
        if(this.listaArticulos.contains(a)){
            return this.listaArticulos.remove(a);     
        }
        return false;
    }
    
    public ArrayList<Articulo> getListaArticulos() {
        return listaArticulos;
        
    }

    public void setListaArticulos(ArrayList<Articulo> listaArticulos) {
        this.listaArticulos = listaArticulos;
    }

    public Cliente getCliente(){
        return cliente;
    }
    
    public void setCliente(Cliente c){
        cliente=c;
    }

    public Date getFecha() {
        return fecha;
    }

    public void setFecha(Date fecha) {
        this.fecha = fecha;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }
    
    public void addCompra() throws ExcepcionPersistencia{
        if(PersistenciaCompra.insertarCompra(this)!=1){
            throw new ExcepcionPersistencia("Compra no añadida correctamente");
        }
    }
}
